package clases;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import javax.swing.JOptionPane;


public class Conexion {

	private String SERVER;
	private String USUARIO;
	private String CONTRASENA;
	private String PUERTO;
	private String DBASE;
	private Connection conexion;
	private PreparedStatement consulta;
	private ResultSet rsresultado;
	private int posicion = 1;
	
	
	public Conexion()
	{
		this.SERVER = "FER\\SQLEXPRESS";
		this.DBASE = "CIFCO_hrm";
		this.USUARIO = "HRMuser";
		this.CONTRASENA = "P@SSW0RD";
		this.PUERTO = "1434";
		
	}
	public static void main(String [] args)
	{

	}
	
	public Connection cnxOpen()
	{
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			conexion = DriverManager.getConnection("jdbc:sqlserver://" + SERVER
					+ ":" + PUERTO + ";Initial Catalog=" + DBASE + ";user=" + USUARIO
					+ ";password=" + CONTRASENA + ";");


			

			return conexion;

		} catch (Exception ex) {
			JOptionPane.showMessageDialog(null, "No se puede abrir la conexion "+ex.toString());
		}
		return null;
	}
	
	// CERRAR LA CONEXION
		public void cnxClose() {
			try {
				conexion.close();
			} catch (Exception ex) {
				JOptionPane.showMessageDialog(
						null,
						"Error en la conexion a la base de datos \n"
								+ ex.getMessage());
			}
		}

		// INSERT, UPDATE, DELETE
		public void sentenciaConnection(String query, ArrayList<String> parametros) {

			try {
				cnxOpen();
					consulta = conexion.prepareStatement(query);
					while (posicion < (parametros.size() + 1)) {
						consulta.setString(posicion, parametros.get(posicion - 1));
						posicion++;
					}
					posicion = 1;
					consulta.execute();
				cnxClose();
			} catch (Exception ex) {
				JOptionPane.showMessageDialog(null,
						"Error en la conexion a la base de datos" + ex);
			}
		}

		// REALIZAR CONSULTAS Y DEVOLVER EL RESULTSET
		public ResultSet consultaConnection(String query, ArrayList<String> parametros) {
			try {
				cnxOpen();
				
				consulta = conexion.prepareStatement(query);
				
				while (posicion < (parametros.size() + 1)) {
					consulta.setString(posicion, parametros.get(posicion - 1));
					posicion++;
				}
				posicion = 1;
				rsresultado = consulta.executeQuery();
				
				return rsresultado;

			} catch (Exception ex) {
				JOptionPane.showMessageDialog(null,
						"Ha ocurrido un error en la consulta\n" + ex);
				return null;
			}
		}

		public ResultSet consultaConnection(String query) {
			try {
				cnxOpen();
				consulta = conexion.prepareStatement(query);
				rsresultado = consulta.executeQuery();
				
				return rsresultado;
				
			} catch (Exception ex) {
				JOptionPane.showMessageDialog(null,
						"Ha ocurrido un error en la consulta\n" + ex);
				return null;
			}
		}
		
	
}
